﻿<?xml version="1.0" encoding="utf-8" ?>
<GuidancePackage xmlns="http://schemas.microsoft.com/pag/gax-core"
    Name="WiGOPathfinderRCX" 
    Caption="WiGO Pathfinder RCX Software Factory"
    Description="Software Factory for Lego Pathfinder robot on brickOS and gnu g++"
    BindingRecipe="BindingRecipe"
    Guid="d95838f2-c1b6-4f20-b6eb-5e30ce978c52" 
    SchemaVersion="1.0">
    <Overview Url="Overview.htm"/>
    <Recipes>
      <!-- Test -->
      <!-- Test -->
      <!-- このレシピをStrategyプロジェクトにしていく。ファイルの追加はプロジェクトを作った後、AddItemFromStringActionで行えばよい。T4で日本語文字化け -->
      <Recipe Name="TestAppVCPPProjCreate" Bound="true">
        <Types>
          <TypeAlias Name="Evaluator" Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.ExpressionEvaluatorValueProvider,Microsoft.Practices.RecipeFramework.Library" />
        </Types>
        <Caption>Test Create App VC++ Project</Caption>
        <HostData>
          <Icon ID="1047"/>
          <CommandBar Name="Solution Folder"/>
        </HostData>
        <Arguments>
          <Argument Name="ProjectName" Type="System.String">
            <ValueProvider Type="Evaluator" Expression="TestProject"/>
          </Argument>
          <Argument Name="IncDirs" Type="System.String[]">
            <ValueProvider Type="WiGO.RCX.PF.ValueProviders.CoreIncDirsValueProvider, WiGOPathfinderRCX"
             />
          </Argument>
          <Argument Name="FileProvider" Type="WiGO.RCX.PF.ValueProviders.VCPPProjectFileProvider, WiGOPathfinderRCX">
            <ValueProvider Type="WiGO.RCX.PF.ValueProviders.GenAppFilesValueProvider, WiGOPathfinderRCX"
             />
          </Argument>
          <Argument Name="SrcFiles" Type="System.String[]">
            <ValueProvider Type="Evaluator"
               Expression="$(FileProvider.SourceFiles)" />
          </Argument>
          <Argument Name="HdrFiles" Type="System.String[]">
            <ValueProvider Type="Evaluator"
               Expression="$(FileProvider.HeaderFiles)" />
          </Argument>
          <Argument Name="CurrentFolder" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
            <ValueProvider Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.FirstSelectedProject, Microsoft.Practices.RecipeFramework.Library" />
          </Argument>
        </Arguments>
        <Actions>
          <Action Name="ItemContent"
                  Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
                  Template="Text\VCProjExt.vcproj.t4">
            <Input Name="ProjectName" RecipeArgument="ProjectName"/>
            <Input Name="IncDirs" RecipeArgument="IncDirs" />
            <Input Name="Sources" RecipeArgument="SrcFiles" />
            <Input Name="Headers" RecipeArgument="HdrFiles" />
            <Output Name="Content" />
          </Action>
          <Action Name="CheckContent" Type="WiGO.RCX.PF.Actions.CheckContentAction, WiGOPathfinderRCX">
            <Input Name="TextContent" ActionOutput="ItemContent.Content"/>
          </Action>
          <Action Name="CreateVCPPProjFile" Type="WiGO.RCX.PF.Actions.CreateVCPProjectByT4Action, WiGOPathfinderRCX">
            <Input Name="ProjectName" RecipeArgument="ProjectName"/>
            <Input Name="FileContent" ActionOutput="ItemContent.Content"/>
            <Output Name="ProjectFileName"/>
            <Output Name="TargetFolder"/>
          </Action>
          <Action Name="AddProjFileToSolution" Type="WiGO.RCX.PF.Actions.AddProjectToSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="SolutionProject" ActionOutput="CreateVCPPProjFile.TargetFolder"/>
            <Input Name="ProjectFile" ActionOutput="CreateVCPPProjFile.ProjectFileName"/>
          </Action>
        </Actions>
      </Recipe>
      <!-- Test -->
      <!-- C++ソース/ヘッダーファイルのインポートとUnboundレシピのサンプル -->
      <Recipe Name="TestAddStrategyFile" Bound="false">
        <Caption>Test Add Strategy File</Caption>
        <HostData>
          <Icon ID="1047"/>
          <CommandBar Name="Solution Folder"/>
        </HostData>
        <Arguments>
          <Argument Name="ProjectName"/>
          <Argument Name="Author" />
          <Argument Name="FileType"/>
          <Argument Name="CurrentProject" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
            <ValueProvider Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.FirstSelectedProject, Microsoft.Practices.RecipeFramework.Library" />
          </Argument>
          <Argument Name="FileName"/>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Set infos...</Title>
                <Fields>
                  <Field Label="Project Name" ValueName="ProjectName"></Field>
                  <Field Label="File Type" ValueName="FileType"/>
                  <Field Label="File Name" ValueName="FileName"/>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="ItemContent"
                  Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
                  Template="Text\CPPFiles\Strategy.hcpp.t4">
            <Input Name="ProjectName" RecipeArgument="ProjectName"/>
            <Input Name="FileType" RecipeArgument="FileType" />
            <Output Name="Content" />
          </Action>
          <Action Name="CheckContent" Type="WiGO.RCX.PF.Actions.CheckContentAction, WiGOPathfinderRCX">
            <Input Name="TextContent" ActionOutput="ItemContent.Content"/>
          </Action>
          <Action Name="AddToProject" Type="Microsoft.Practices.RecipeFramework.Library.Actions.AddItemFromStringAction, Microsoft.Practices.RecipeFramework.Library">
            <Input Name="Project" RecipeArgument="CurrentProject"/>
            <Input Name="Content" ActionOutput="ItemContent.Content"/>
            <Input Name="TargetFileName" RecipeArgument="FileName" />
          </Action>
        </Actions>
      </Recipe>
      <!-- Application層のVC++プロジェクト生成用Recipe定義インポート -->
      <xi:include href="Recipes/CreateStrategyVCPPProjectRecipe.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
      <xi:include href="Recipes/CreateDriveControlVCPPProjectRecipe.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
      <xi:include href="Recipes/CreatePathRecognizerVCPPProjectRecipe.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
      <xi:include href="Recipes/CreateApplicationVCPPProjectRecipe.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
      <!-- VC++プロジェクト部品インポートレシピ定義インポート -->
      <xi:include href="Recipes/ImportArgorithmVCPPProjectRecipe.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
      <Recipe Name="ProtoCopyContents" Bound="true">
        <!-- This recipe doesn't work!!! Why?? -->
        <Caption>Prototype of Copy Contents</Caption>
        <HostData>
          <Icon ID="1047"/>
          <CommandBar Name="Solution Folder"/>
        </HostData>
        <Arguments>
          <Argument Name="Source" Type="System.String"/>
          <Argument Name="Destination" Type="System.String"/>

        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Prototype of Copy Contents</Title>
                <Fields>
                  <Field ValueName="Source" Label="Source">
                  </Field>
                  <Field ValueName="Destination" Label="Destination">
                  </Field>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="CopyContents" Type="EEst.SoftwareFatory.Actions.ImportContentsAction, WiGOPathfinderRCX">
            <Input Name="SourcePath" RecipeArgument="Source"/>
            <Input Name="DestPath" RecipeArgument="Destination"/>
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="ProtoCheck" Bound="true">
        <Caption>Import Registered Contents</Caption>
        <HostData>
          <Icon ID="680"/>
          <CommandBar Name="Solution Folder"/>
        </HostData>
        <Arguments>
          <Argument Name="SourcePath" Required="true" Type="System.String"/>
          <Argument Name="DestPath" Type="System.String"/>
          <Argument Name="TargetName" Type="System.String"/>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Temporary Check</Title>
                <Fields>
                  <Field ValueName="SourcePath" Label="Source Path"/>
                  <Field ValueName="DestPath" Label="Dest Path"/>
                  <Field ValueName="TargetName" Label="Target Name"/>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="TemporaryActionCheck" Type="WiGO.RCX.PF.Actions.ImportContents2Action, WiGOPathfinderRCX">
            <Input Name="SourcePath" RecipeArgument="SourcePath"/>
            <Input Name="DestPath" RecipeArgument="DestPath"/>
            <Input Name="TargetName" RecipeArgument="TargetName"/>
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="CreateVCPPProjectRecipe" Bound="true">
        <!-- This Recipe doesn't work. it seems to be not able to use DTE's and VCProjectEngine's classes together! -->
        <Caption>Create VC++ Project -- Bad!!</Caption>
        <HostData>
          <Icon ID="680"/>
          <CommandBar Name="Solution Folder"/>
        </HostData>
        <Arguments>
          <Argument Name="ProjectName">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library" />
          </Argument>
          <Argument Name="SolutionFolder" Required="false">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library" />
          </Argument>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Project Name</Title>
                <Fields>
                  <Field Label="Project Name" ValueName="ProjectName" />
                  <Field Label="Solution Folder" ValueName="SolutionFolder"  />
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="CreateVCPPProject" Type="WiGO.RCX.PF.Actions.CreateVCPPProjectAction, WiGOPathfinderRCX">
            <Input Name="ProjectName" RecipeArgument="ProjectName"/>
            <Input Name="SolutionFolder" RecipeArgument="SolutionFolder"  />
            <Output Name="ProjectFile" />
            <Output Name="TargetFolder" />
          </Action>
          <Action Name="AddVCPPProject" Type="WiGO.RCX.PF.Actions.AddVCPPProjectToSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="ProjectFile" ActionOutput="CreateVCPPProject.ProjectFile"/>
            <Input Name="TargetFolder" ActionOutput="CreateVCPPProject.TargetFolder"/>
          </Action>
        </Actions>
      </Recipe>
      <!-- こちらは正しく動くレシピ。VC++プロジェクトを生成できる -->
      <Recipe Name="CreateVCPPProject2Recipe" Bound="true">
        <Caption>Create VC++ Project</Caption>
        <HostData>
          <Icon ID="680"/>
          <CommandBar Name="Solution Folder"/>
        </HostData>
        <Arguments>
          <Argument Name="ProjectName">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
          </Argument>
          <Argument Name="FolderName" Required="false">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
          </Argument>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Specify VC++ Project Name</Title>
                <Fields>
                  <Field ValueName="ProjectName" Label="Project Name"/>
                  <Field ValueName="FolderName" Label="Folder Name"/>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="GetPrjGUID" Type="WiGO.RCX.PF.Actions.GetNewGuidAction, WiGOPathfinderRCX">
            <Output Name="NewID"/>
          </Action>
          <Action Name="GetSrcGUID" Type="WiGO.RCX.PF.Actions.GetNewGuidAction, WiGOPathfinderRCX">
            <Output Name="NewID"/>
          </Action>
          <Action Name="GetHdrGUID" Type="WiGO.RCX.PF.Actions.GetNewGuidAction, WiGOPathfinderRCX">
            <Output Name="NewID"/>
          </Action>
          <Action Name="GenerateProjectFile" Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
                  Template="Text\VCProj.vcproj.t4">
            <Input Name="ProjectName" RecipeArgument="ProjectName"/>
            <Input Name="ProjectID"  ActionOutput="GetPrjGUID.NewID"/>
            <Input Name="HdrFilterID"  ActionOutput="GetSrcGUID.NewID"/>
            <Input Name="SrcFilterID"  ActionOutput="GetHdrGUID.NewID"/>
            <Output Name="Content"/>
          </Action>
          <Action Name="CreateVCPPProjFile" Type="WiGO.RCX.PF.Actions.CreateVCPProjectByT4Action, WiGOPathfinderRCX">
            <Input Name="ProjectName" RecipeArgument="ProjectName"/>
            <Input Name="FileContent" ActionOutput="GenerateProjectFile.Content"/>
            <Input Name="SubFolder" RecipeArgument="FolderName"/>
            <Output Name="ProjectFileName"/>
            <Output Name="TargetFolder"/>
          </Action>
          <Action Name="AddProjFileToSolution" Type="WiGO.RCX.PF.Actions.AddProjectToSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="SolutionProject" ActionOutput="CreateVCPPProjFile.TargetFolder"/>
            <Input Name="ProjectFile" ActionOutput="CreateVCPPProjFile.ProjectFileName"/>
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="AddFileToSolutionRecipe" Bound="true">
        <Caption>Add File to Solution...</Caption>
        <HostData>
          <Icon ID="1046"/>
          <CommandBar Name="Solution Folder"/>
        </HostData>
        <Arguments>
          <Argument Name="FolderName">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
          </Argument>
          <Argument Name="ProjectFile">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
          </Argument>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Specify Folder and Project File</Title>
                <Fields>
                  <Field ValueName="FolderName" Label="Folder Name"/>
                  <Field ValueName="ProjectFile" Label="Project File Name">
                    <!--    <Editor Type="WiGO.RCX.PF.Editors.FileChooser, WiGOPathfinderRCX"/> -->
                    <!--     <Editor Type="WiGO.RCX.PF.Editors.ItemTemplateChooser, WiGOPathfinderRCX"/> -->
                  </Field>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="FindFolder" Type="WiGO.RCX.PF.Actions.FindSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="FolderPath" RecipeArgument="FolderName"/>
            <Output Name="FolderProject"/>
          </Action>
          <Action Name="AddProjectToSolution" Type="WiGO.RCX.PF.Actions.AddProjectToSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="SolutionProject" ActionOutput="FindFolder.FolderProject"/>
            <Input Name="ProjectFile" RecipeArgument="ProjectFile"/>
            <Output Name="AddedProject"/>
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="FindSolutionProjectRecipe" Bound="true">
        <Caption>Find Solution Folder Project</Caption>
        <HostData>
          <Icon ID="1046"/>
          <CommandBar Name="Folder"/>
          <CommandBar Name="Project"/>
          <CommandBar Name="Solution Folder"/>
        </HostData>
        <Arguments>
          <Argument Name="FolderName">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
          </Argument>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Folder Name</Title>
                <Fields>
                  <Field ValueName="FolderName" Label="Folder Name"/>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="FindFolder" Type="WiGO.RCX.PF.Actions.FindSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="FolderPath" RecipeArgument="FolderName"/>
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="BindingRecipe">
        <Types>
          <TypeAlias Name="RefCreator" Type="Microsoft.Practices.RecipeFramework.Library.Actions.CreateUnboundReferenceAction, Microsoft.Practices.RecipeFramework.Library"/>
        </Types>
        <Caption>Creates unbound references to the guidance package</Caption>
        <Actions>
          <Action Name="UnboundT4Template" Type="RefCreator" AssetName="GenerateRepeatingClassT4"
              ReferenceType="Microsoft.Practices.RecipeFramework.Library.AssetReferences.UnboundReferences.CSharpProjectRecipeReference, Microsoft.Practices.RecipeFramework.Library" />
          <Action Name="CreateSampleUnboundItemTemplateRef" Type="RefCreator" AssetName="Items\Class.vstemplate"
              ReferenceType="WiGO.RCX.PF.References.ClassLibraryReference, WiGOPathfinderRCX" />
          <Action Name="CreateUnboundItemTemplateRef" Type="RefCreator" AssetName="AddItemTemplateReference"
              ReferenceType="Microsoft.Practices.RecipeFramework.Library.AssetReferences.UnboundReferences.CSharpProjectRecipeReference, Microsoft.Practices.RecipeFramework.Library" />
          <Action Name="CreateUnboundProjectTemplateRef" Type="RefCreator" AssetName="AddProjectTemplateReference"
              ReferenceType="WiGO.RCX.PF.References.SolutionFolderRecipeReference, WiGOPathfinderRCX" />
          <Action Name="CreateAppProjectTemplateRef" Type="RefCreator" AssetName="CreateApplicationVCPPProject"
              ReferenceType="WiGO.RCX.PF.References.SolutionFolderApplicationRecipeReference, WiGOPathfinderRCX" />
          <Action Name="CreateDCProjectTemplateRef" Type="RefCreator" AssetName="CreateDriveControlVCPPProject"
              ReferenceType="WiGO.RCX.PF.References.SolutionFolderDriveControlRecipeReference, WiGOPathfinderRCX" />
          <Action Name="CreatePRProjectTemplateRef" Type="RefCreator" AssetName="CreatePathRecoginzerVCPPProject"
              ReferenceType="WiGO.RCX.PF.References.SolutionFolderPathRecognizerRecipeReference, WiGOPathfinderRCX" />
          <Action Name="CreateSTProjectTemplateRef" Type="RefCreator" AssetName="CreateVCPPStrategyProject"
              ReferenceType="WiGO.RCX.PF.References.SolutionFolderStrategyRecipeReference, WiGOPathfinderRCX" />
          <Action Name="CreateUnboundRecipeRef" Type="RefCreator" AssetName="AddRecipeReference"
              ReferenceType="WiGO.RCX.PF.References.AnyElementReference, WiGOPathfinderRCX" />
          <!-- Unbound Recipeの例
 <Action Name="CreateTestAddStrategyFileRef" Type="RefCreator" AssetName="TestAddStrategyFile"
                ReferenceType="WiGO.RCX.PF.References.AnyElementReference, WiGOPathfinderRCX" />
                -->
        </Actions>
      </Recipe>
      <Recipe Name="CreatePathfinderRobotProject">
        <!-- このRecipeがSolution生成時に実行される -->
        <Types>
          <TypeAlias Name="Evaluator" Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.ExpressionEvaluatorValueProvider,Microsoft.Practices.RecipeFramework.Library" />
        </Types>
        <Caption>Collects information for the new Pathfinder Robot C# Project.</Caption>
        <Arguments>
          <Argument Name="CygwinHome" Type="System.String">
          </Argument>
          <Argument Name="BrickOSHome" Type="System.String">
          </Argument>
          <Argument Name="H8ToolsHome" Type="System.String">
          </Argument>
          <Argument Name="FrameworkFolderName" Type="System.String">
            <ValueProvider Type="Evaluator"
               Expression="Framework" />
          </Argument>
          <Argument Name="ToolsFolderName" Type="System.String">
            <ValueProvider Type="Evaluator"
               Expression="Tools" />
          </Argument>
          <Argument Name="FrameworkSourcePlace" Type="System.String">
            <ValueProvider Type="Evaluator" Expression="Templates\Solutions\Projects\PathfinderCore\" >
            </ValueProvider>
          </Argument>
          <Argument Name="ToolsSourcePlace" Type="System.String">
            <ValueProvider Type="Evaluator" Expression="Templates\Solutions\Projects\Tools\" >
            </ValueProvider>
          </Argument>
          <Argument Name="BehaviorFramework" Type="System.String">
            <ValueProvider Type="Evaluator" Expression="BehaviorFramework"/>
          </Argument>
          <Argument Name="PlatformWrapper" Type="System.String">
            <ValueProvider Type="Evaluator" Expression="PlatformWrapper"/>
          </Argument>
          <Argument Name="SimulatorBase" Type="System.String">
            <ValueProvider Type="Evaluator" Expression="SimulatorBase"/>
          </Argument>
          <Argument Name="RobotEmulator" Type="System.String">
            <ValueProvider Type="Evaluator" Expression="RobotEmulator"/>
          </Argument>
          <Argument Name="VS" Type="EnvDTE.DTE, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
            <ValueProvider Type="WiGO.RCX.PF.ValueProviders.EnvDTEValueProvider, WiGOPathfinderRCX"/>
          </Argument>
          <Argument Name="VSVersion" Type="System.String">
            <ValueProvider Type="Evaluator" Expression="$(VS.Version)"></ValueProvider>
          </Argument>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Set up information for Cross Compile Envrionment</Title>
                <Fields>
                  <Field Label="Cygwin Home" ValueName="CygwinHome" ReadOnly="true">
                    <Editor Type="WiGO.RCX.PF.Editors.FolderChooser, WiGOPathfinderRCX"/>
                  </Field>
                  <Field Label="BrickOS Home" ValueName="BrickOSHome" ReadOnly="true">
                    <Editor Type="WiGO.RCX.PF.Editors.FolderChooser, WiGOPathfinderRCX"/>
                  </Field>
                  <Field Label="H8 Tools Home" ValueName="H8ToolsHome" ReadOnly="true">
                    <Editor Type="WiGO.RCX.PF.Editors.FolderChooser, WiGOPathfinderRCX"/>
                  </Field>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="IsItExecutedQ" Type="WiGO.RCX.PF.Actions.CheckContentAction, WiGOPathfinderRCX">
            <Input Name="TextContent" RecipeArgument="CygwinHome"/>
          </Action>
          <Action Name="FindFrameworkFolder" Type="WiGO.RCX.PF.Actions.FindSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="FolderPath" RecipeArgument="FrameworkFolderName"/>
            <Output Name="FolderProject"/>
          </Action>
          <Action Name="ImportBF" Type="WiGO.RCX.PF.Actions.ImportContents2Action, WiGOPathfinderRCX">
            <Input Name="SourcePath" RecipeArgument="FrameworkSourcePlace"/>
            <Input Name="DestPath" RecipeArgument="FrameworkFolderName"/>
            <Input Name="TargetName" RecipeArgument="BehaviorFramework"/>
            <Input Name="VSVersion" RecipeArgument="VSVersion"/>
            <Input Name="CygwinHome" RecipeArgument="CygwinHome"/>
            <Input Name="BrickOSHome" RecipeArgument="BrickOSHome"/>
            <Input Name="H8ToolsHome" RecipeArgument="H8ToolsHome"/>
            <Output Name="ProjectFileName"/>
          </Action>
          <Action Name="ImportPW" Type="WiGO.RCX.PF.Actions.ImportContents2Action, WiGOPathfinderRCX">
            <Input Name="SourcePath" RecipeArgument="FrameworkSourcePlace"/>
            <Input Name="DestPath" RecipeArgument="FrameworkFolderName"/>
            <Input Name="TargetName" RecipeArgument="PlatformWrapper"/>
            <Input Name="VSVersion" RecipeArgument="VSVersion"/>
            <Input Name="CygwinHome" RecipeArgument="CygwinHome"/>
            <Input Name="BrickOSHome" RecipeArgument="BrickOSHome"/>
            <Input Name="H8ToolsHome" RecipeArgument="H8ToolsHome"/>
            <Output Name="ProjectFileName"/>
          </Action>
          <Action Name="ImportSB2" Type="WiGO.RCX.PF.Actions.ImportContents2Action, WiGOPathfinderRCX">
            <Input Name="SourcePath" RecipeArgument="FrameworkSourcePlace"/>
            <Input Name="DestPath" RecipeArgument="FrameworkFolderName"/>
            <Input Name="TargetName" RecipeArgument="SimulatorBase"/>
            <Input Name="VSVersion" RecipeArgument="VSVersion"/>
            <Input Name="CygwinHome" RecipeArgument="CygwinHome"/>
            <Input Name="BrickOSHome" RecipeArgument="BrickOSHome"/>
            <Input Name="H8ToolsHome" RecipeArgument="H8ToolsHome"/>
            <Output Name="ProjectFileName"/>
          </Action>
          <Action Name="AddBFProjFileToSolution" Type="WiGO.RCX.PF.Actions.AddProjectToSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="SolutionProject" ActionOutput="FindFrameworkFolder.FolderProject"/>
            <Input Name="ProjectFile" ActionOutput="ImportBF.ProjectFileName"/>
            <Output Name="AddedProject"/>
          </Action>
          <Action Name="AddPWProjFileToSolution" Type="WiGO.RCX.PF.Actions.AddProjectToSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="SolutionProject" ActionOutput="FindFrameworkFolder.FolderProject"/>
            <Input Name="ProjectFile" ActionOutput="ImportPW.ProjectFileName"/>
            <Output Name="AddedProject"/>
          </Action>
          <Action Name="DefineBFDependency" Type="Microsoft.Practices.RecipeFramework.Library.Actions.AddProjectDependencyAction, Microsoft.Practices.RecipeFramework.Library">
            <Input Name="Project" ActionOutput="AddBFProjFileToSolution.AddedProject"/>
            <Input Name="DependencyProject" ActionOutput="AddPWProjFileToSolution.AddedProject"/>
          </Action>
          <Action Name="AddSB2ProjFileToSolution" Type="WiGO.RCX.PF.Actions.AddProjectToSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="SolutionProject" ActionOutput="FindFrameworkFolder.FolderProject"/>
            <Input Name="ProjectFile" ActionOutput="ImportSB2.ProjectFileName"/>
          </Action>
          <Action Name="FindToolsFolder" Type="WiGO.RCX.PF.Actions.FindSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="FolderPath" RecipeArgument="ToolsFolderName"/>
            <Output Name="FolderProject"/>
          </Action>
          <Action Name="ImportRE" Type="WiGO.RCX.PF.Actions.ImportContents2Action, WiGOPathfinderRCX">
            <Input Name="SourcePath" RecipeArgument="ToolsSourcePlace"/>
            <Input Name="DestPath" RecipeArgument="ToolsFolderName"/>
            <Input Name="TargetName" RecipeArgument="RobotEmulator"/>
            <Input Name="VSVersion" RecipeArgument="VSVersion"/>
            <Input Name="CygwinHome" RecipeArgument="CygwinHome"/>
            <Input Name="BrickOSHome" RecipeArgument="BrickOSHome"/>
            <Input Name="H8ToolsHome" RecipeArgument="H8ToolsHome"/>
            <Output Name="ProjectFileName"/>
          </Action>
          <Action Name="AddREProjFileToSolution" Type="WiGO.RCX.PF.Actions.AddProjectToSolutionFolderAction, WiGOPathfinderRCX">
            <Input Name="SolutionProject" ActionOutput="FindToolsFolder.FolderProject"/>
            <Input Name="ProjectFile" ActionOutput="ImportRE.ProjectFileName"/>
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="GenerateRepeatingClassT4" Bound="false">
        <xi:include href="TypeAlias.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
        <Caption>Add class with T4 generated content</Caption>
        <HostData>
          <Icon ID="689" />
          <CommandBar Name="Project" />
        </HostData>
        <Arguments>
          <Argument Name="CurrentProject" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
            <ValueProvider Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.FirstSelectedProject, Microsoft.Practices.RecipeFramework.Library" />
          </Argument>
          <Argument Name="ClassName">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.CodeIdentifierStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
          </Argument>
          <Argument Name="TargetFile">
            <ValueProvider Type="Evaluator"
                     Expression="$(ClassName).cs">
              <MonitorArgument Name="ClassName" />
            </ValueProvider>
          </Argument>
          <Argument Name="TargetNamespace">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
            <ValueProvider Type="Evaluator"
                     Expression="$(CurrentProject.Properties.Item('DefaultNamespace').Value)" />
          </Argument>
          <!-- Show that T4 receives typed values in the dictionary -->
          <Argument Name="Iterations" Type="System.Int32" />
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Class information</Title>
                <Fields>
                  <Field ValueName="ClassName" Label="Class Name" />
                  <Field ValueName="TargetNamespace" Label="Namespace" />
                  <Field ValueName="Iterations" Label="Iterations"
                    InvalidValueMessage="Must enter a valid integer value to use for the number of iterations." />
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="GenerateClass" Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
              Template="Text\Repeating.cs.t4"
              InputValue="Configured Static Value">
            <!-- InputValue shows a configured attribute in T4 template that doesn't need a property on the class -->
            <Input Name="ClassName" RecipeArgument="ClassName" />
            <Input Name="TargetNamespace" RecipeArgument="TargetNamespace" />
            <Input Name="Iterations" RecipeArgument="Iterations" />
            <Output Name="Content" />
          </Action>
          <Action Name="AddClass" Type="Microsoft.Practices.RecipeFramework.Library.Actions.AddItemFromStringAction, Microsoft.Practices.RecipeFramework.Library"
              Open="true">
            <!--Shows how to specify a property as a fixed value in config-->
            <Input Name="Content" ActionOutput="GenerateClass.Content" />
            <Input Name="TargetFileName" RecipeArgument="TargetFile" />
            <Input Name="Project" RecipeArgument="CurrentProject" />
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="NewItemClass" Recurrent="true">
        <xi:include href="TypeAlias.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
        <Caption>Collects information from the user</Caption>
        <Description>
          This recipe doesn't perform any actions, but showcases the features
          available to build highly functional wizards by taking advantage of
          type converters and editors.
        </Description>
        <HostData>
          <Icon ID="1429"/>
          <CommandBar Name="Project" />
        </HostData>
        <Arguments>
          <Argument Name="Developer" />
          <!-- Example of automatic UITypeEditor provided by .NET, and a custom value provider -->
          <Argument Name="Date" Type="System.DateTime">
            <ValueProvider Type="WiGO.RCX.PF.ValueProviders.DateNowValueProvider, WiGOPathfinderRCX" />
          </Argument>
          <!-- Example of automatic converter provided by .NET -->
          <Argument Name="Platform" Type="System.PlatformID" />
          <Argument Name="Iterations" Type="System.Int32">
            <!-- Shows how to use the expression evaluator to assign simple default values, which are typed nevertheless -->
            <!-- The full type of the evaluator is included using XInclude from a reusable file -->
            <ValueProvider Type="Evaluator" Expression="5" />
          </Argument>
          <!-- The following two arguments are not shown to the user, but collaborate to retrieve a value -->
          <Argument Name="CurrentProject" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
            <ValueProvider Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.FirstSelectedProject, Microsoft.Practices.RecipeFramework.Library" />
          </Argument>
          <Argument Name="TargetNamespace">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
            <!-- Shows an argument with a custom type defined in-place, and not collected by the wizard -->
            <ValueProvider Type="Evaluator" Expression="$(CurrentProject.Properties.Item('DefaultNamespace').Value).Generated" />
          </Argument>
          <Argument Name="Project" Type="EnvDTE.Project, EnvDTE" Required="false">
            <!-- Converter ensures that a string representation of a project is valid, and also allows conversion to/from it to the Project instance. -->
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.ProjectConverter, Microsoft.Practices.RecipeFramework.Library" />
          </Argument>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Collect information using editors, converters and value providers.</Title>
                <Fields>
                  <Field ValueName="Developer" Label="Your name">
                    <Tooltip>Custom editor provided by the guidance package, the MessageEditor, also used in the "Say a message" recipe.</Tooltip>
                    <Editor Type="WiGO.RCX.PF.Editors.MessageEditor, WiGOPathfinderRCX" />
                  </Field>
                  <Field ValueName="Date" Label="Date">
                    <Tooltip>Automatic editor provided by .NET.</Tooltip>
                  </Field>
                  <Field ValueName="Iterations" Label="Iterations"
                    InvalidValueMessage="Must enter a valid integer value to use for the number of iterations.">
                    <Tooltip>Value retrieved using the value editor, with a fixed value but converted to the proper type automatically.</Tooltip>
                  </Field>
                  <Field ValueName="Platform" Label="Platform">
                    <Tooltip>Automatic converter and values provided by .NET to all Enum types.</Tooltip>
                  </Field>
                  <Field ValueName="TargetNamespace" Label="Target Namespace">
                    <Tooltip>This value was calculated using the ExpressionEvaluatorValueProvider, and referring to other recipe arguments (one containing the current project in this case).</Tooltip>
                  </Field>
                  <Field ValueName="Project" Label="Reference Project">
                    <Tooltip>Shows a complex editor for selecting a project in the current solution, provided with the Library.</Tooltip>
                    <Editor Type="Microsoft.Practices.RecipeFramework.Library.Editors.SolutionPickerEditor, Microsoft.Practices.RecipeFramework.Library" />
                  </Field>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
      </Recipe>
      <Recipe Name="HelloWorldRecipe" Bound="true">
        <Caption>Say a message</Caption>
        <Description>Accepts a message as input and shows a message box with it.</Description>
        <HostData>
          <Icon ID="1046"/>
          <CommandBar Name="Solution Folder"/>
          <CommandBar Name="Project"/>
          <CommandBar Name="Web Project"/>
          <CommandBar Name="Web Item"/>
          <CommandBar Name="Web Folder"/>
        </HostData>
        <Arguments>
          <Argument Name="Message" />
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Collect message to show</Title>
                <LinkTitle>Provide a message that will be used by the HelloWorldAction.</LinkTitle>
                <Help>You shouldn't need a lot of help!</Help>
                <Fields>
                  <Field ValueName="Message" Label="Message">
                    <Editor Type="WiGO.RCX.PF.Editors.MessageEditor, WiGOPathfinderRCX" />
                  </Field>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="HelloWorld" Type="WiGO.RCX.PF.Actions.HelloWorldAction, WiGOPathfinderRCX">
            <Input Name="HelloMessage" RecipeArgument="Message" />
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="CustomWizardPages">
        <Caption>Example of Custom Wizard Pages</Caption>
        <Description>This recurrent recipe demonstrates use of custom wizard pages</Description>
        <HostData>
          <Icon ID="1047"/>
          <CommandBar Name="Solution Folder"/>
        </HostData>
        <Arguments>
          <Argument Name="Argument1" Type="System.String" />
          <Argument Name="Argument2" Type="System.String" />
          <Argument Name="Argument3" Type="System.Drawing.Font, System.Drawing, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page Type="WiGO.RCX.PF.CustomWizardPages.CustomWizPage1, WiGOPathfinderRCX" Width="800" Height="500" />
              <Page Type="WiGO.RCX.PF.CustomWizardPages.CustomWizPage2, WiGOPathfinderRCX" />
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="HelloWorld" Type="WiGO.RCX.PF.Actions.HelloWorldAction, WiGOPathfinderRCX">
            <Input Name="HelloMessage" RecipeArgument="Argument1" />
          </Action>
          <Action Name="HelloWorld2" Type="WiGO.RCX.PF.Actions.HelloWorldAction, WiGOPathfinderRCX">
            <Input Name="HelloMessage" RecipeArgument="Argument2" />
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="AddItemTemplateReference" Bound="false">
        <Caption>Add an item template reference to a Project</Caption>
        <HostData>
          <Icon ID="525" />
          <CommandBar Name="Project" />
        </HostData>
        <Arguments>
          <Argument Name="TemplateFilename" Type="System.String"/>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>New Template Reference</Title>
                <Fields>
                  <Field ValueName="TemplateFilename" Label="Template filename">
                    <Editor Type="WiGO.RCX.PF.Editors.ItemTemplateChooser, WiGOPathfinderRCX" />
                  </Field>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Type="WiGO.RCX.PF.Actions.AddTemplateReference, WiGOPathfinderRCX"
              Name="AddItemTemplateReference">
            <Input Name="TemplateFilename" RecipeArgument="TemplateFilename"/>
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="AddProjectTemplateReference" Bound="false">
        <Caption>Add a project template reference to a Solution Folder or Solution</Caption>
        <HostData>
          <Icon ID="680" />
          <CommandBar Name="Solution Folder" />
          <CommandBar Name="Solution" />
        </HostData>
        <Arguments>
          <Argument Name="TemplateFilename" Type="System.String"/>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>New Template Reference</Title>
                <Fields>
                  <Field ValueName="TemplateFilename" Label="Template filename">
                    <Editor Type="WiGO.RCX.PF.Editors.ProjectTemplateChooser, WiGOPathfinderRCX" />
                  </Field>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Type="WiGO.RCX.PF.Actions.AddTemplateReference, WiGOPathfinderRCX"
              Name="AddItemTemplateReference">
            <Input Name="TemplateFilename" RecipeArgument="TemplateFilename"/>
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="RecipeWithInitialState">
        <Caption>Recipe that is loaded with preset values in the invoking .vstemplate file</Caption>
        <Arguments>
          <Argument Name="StringParameter" Type="System.String"/>
          <Argument Name="IntParameter" Type="System.Int32"/>
          <Argument Name="DoubleParameter" Type="System.Double"/>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Wizard with initial state</Title>
                <Help>Wizard values are set in the .vstemplate</Help>
                <Fields>
                  <Field ValueName="StringParameter" Label="String parameter">
                    <Help>String parameter with initial state specified</Help>
                  </Field>
                  <Field ValueName="IntParameter" Label="Integer parameter">
                    <Help>Integer parameter with initial state specified</Help>
                  </Field>
                  <Field ValueName="DoubleParameter" Label="Double parameter">
                    <Help>Double parameter with initial state specified</Help>
                  </Field>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="HelloWorld" Type="WiGO.RCX.PF.Actions.HelloWorldAction, WiGOPathfinderRCX">
            <Input Name="HelloMessage" RecipeArgument="StringParameter" />
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="InitialStateSerializableClass">
        <Caption>Recipe called from the unfolding of a .vstemplate file</Caption>
        <Arguments>
          <Argument Name="SerializableField" Type="System.String"/>
          <Argument Name="SerializableType" Type="System.String"/>
          <Argument Name="NonSerializableField" Type="System.String"/>
          <Argument Name="NonSerializableType" Type="System.String"/>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Wizard with initial state from unfolding</Title>
                <Help>Wizard values are set in the .vstemplate</Help>
                <Fields>
                  <Field ValueName="SerializableField" Label="Serializable field">
                    <Help>Name of a serializable field of the new class</Help>
                  </Field>
                  <Field ValueName="SerializableType" Label="Serializable type">
                    <Help>Type of the previous serializable field</Help>
                  </Field>
                  <Field ValueName="NonSerializableField" Label="Non Serializable field">
                    <Help>Name of a non serializable field of the new class</Help>
                  </Field>
                  <Field ValueName="NonSerializableType" Label="Non Serializable field">
                    <Help>Type of the previous non serializable field</Help>
                  </Field>
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
      </Recipe>
      <Recipe Name="AddRecipeReference" Bound="false">
        <Caption>Add a recipe reference to a solution element</Caption>
        <HostData>
          <Icon ID="525" />
          <CommandBar Name="Solution" />
          <CommandBar Name="Solution Folder" />
          <CommandBar Name="Project" />
          <CommandBar Name="Folder" />
          <CommandBar Name="Item" />
          <CommandBar Name="Web Project" />
          <CommandBar Name="Web Folder" />
          <CommandBar Name="Web Item" />
        </HostData>
        <Arguments>
          <Argument Name="RecipeName" Type="System.String">
            <Converter Type="WiGO.RCX.PF.Converters.RecipeNameConverter, WiGOPathfinderRCX"/>
          </Argument>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>New Template Reference</Title>
                <Fields>
                  <Field ValueName="RecipeName" Label="Recipe" />
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Type="WiGO.RCX.PF.Actions.AddRecipeReference, WiGOPathfinderRCX"
              Name="AddRecipeReference">
            <Input Name="RecipeName" RecipeArgument="RecipeName"/>
          </Action>
        </Actions>
      </Recipe>
      <Recipe Name="ShowCurrentSelection">
        <Caption>Show current selection</Caption>
        <HostData>
          <Icon ID="172" />
          <CommandBar Name="Solution" />
          <CommandBar Name="Solution Folder" />
          <CommandBar Name="Project" />
          <CommandBar Name="Folder" />
          <CommandBar Name="Item" />
          <CommandBar Name="Web Project" />
          <CommandBar Name="Web Folder" />
          <CommandBar Name="Web Item" />
        </HostData>
        <Actions>
          <Action Name="ShowCurrent" Type="WiGO.RCX.PF.Actions.ShowCurrentSelection, WiGOPathfinderRCX" />
        </Actions>
      </Recipe>
      <Recipe Name="AddMainClass" Recurrent="false">
        <Types>
          <TypeAlias Name="Evaluator" Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.ExpressionEvaluatorValueProvider,Microsoft.Practices.RecipeFramework.Library" />
        </Types>
        <Caption>Add class with Main method</Caption>
        <HostData>
          <Icon ID="630" />
          <CommandBar Name="Project" />
        </HostData>
        <Arguments>
          <Argument Name="CurrentProject" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
            <ValueProvider Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.FirstSelectedProject, Microsoft.Practices.RecipeFramework.Library" />
          </Argument>
          <Argument Name="ClassName">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.CodeIdentifierStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
          </Argument>
          <Argument Name="TargetFile">
            <ValueProvider Type="Evaluator"
                     Expression="$(ClassName).cs">
              <MonitorArgument Name="ClassName" />
            </ValueProvider>
          </Argument>
          <Argument Name="TargetNamespace">
            <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
            <ValueProvider Type="Evaluator"
                     Expression="$(CurrentProject.Properties.Item('DefaultNamespace').Value)" />
          </Argument>
          <Argument Name="HelloMessage">
            <Converter Type="WiGO.RCX.PF.Converters.HelloWorldConverter, WiGOPathfinderRCX" />
          </Argument>
        </Arguments>
        <GatheringServiceData>
          <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
            <Pages>
              <Page>
                <Title>Hello World</Title>
                <Fields>
                  <Field ValueName="ClassName" Label="Class Name" />
                  <Field ValueName="TargetNamespace" Label="Namespace" />
                  <Field ValueName="HelloMessage" Label="Message" />
                </Fields>
              </Page>
            </Pages>
          </Wizard>
        </GatheringServiceData>
        <Actions>
          <Action Name="GenerateMainClass" Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
              Template="Text\Program.cs.t4">
            <Input Name="Hello" RecipeArgument="HelloMessage" />
            <Input Name="ClassName" RecipeArgument="ClassName"/>
            <Input Name="TargetNamespace" RecipeArgument="TargetNamespace"/>
            <Output Name="Content" />
          </Action>
          <Action Name="AddMainClass" Type="Microsoft.Practices.RecipeFramework.Library.Actions.AddItemFromStringAction, Microsoft.Practices.RecipeFramework.Library"
              Open="true">
            <!--Shows how to specify a property as a fixed value in config-->
            <Input Name="Content" ActionOutput="GenerateMainClass.Content" />
            <Input Name="TargetFileName" RecipeArgument="TargetFile" />
            <Input Name="Project" RecipeArgument="CurrentProject" />
          </Action>
        </Actions>
      </Recipe>
    </Recipes>
</GuidancePackage>
